"""Definition of the Convenio content type
"""

from zope.interface import implements, directlyProvides

from Products.Archetypes import atapi
from Products.ATContentTypes.content import base
from Products.ATContentTypes.content import schemata
from Products.Archetypes import utils

from guegue.alcaldias import alcaldiasMessageFactory as _
from guegue.alcaldias.interfaces import IConvenio
from guegue.alcaldias.config import PROJECTNAME

ConvenioSchema = schemata.ATContentTypeSchema.copy() + atapi.Schema((

    # -*- Your Archetypes field definitions here ... -*-
    atapi.StringField('title',
                searchable=1,
                isMetadata=0,
                accessor='Title',
                widget=atapi.StringWidget(label='Nombre del Convenio',
                                      maxlength=150,
                                      size=30,
                                      label_msgid="label_entry_title",
                                      description_msgid="help_entry_title",
                                      i18n_domain="guegue.alcaldias",
                                      description='')),
    atapi.StringField('description',
                searchable=1,
                isMetadata=0,
                accessor='Description',
                widget=atapi.TextAreaWidget(label='Breve descripcion',
                                      label_msgid="label_entry_description",
                                      description_msgid="help_entry_description",
                                      i18n_domain="guegue.alcaldias",
                                      description='Entre una breve descripción del convenio.')),
    atapi.TextField('firmantes',
                searchable=1,
                required=0,
                default_content_type='text/html',
                default_output_type='text/html',
                allowable_content_types=('text/plain','text/structured', 'text/html', 'text/restructured'),
                widget=atapi.RichWidget(label='Firmantes',
                                      label_msgid="label_entry_frimantes",
                                      description_msgid="help_entry_firmantes",
                                      i18n_domain="guegue.alcaldias",
                                      description='Organismos Firmantes (Nombre, Descripción)')),
    atapi.TextField('objetivos',
                searchable=1,
                required=0,
                default_content_type='text/html',
                default_output_type='text/html',
                allowable_content_types=('text/plain','text/structured', 'text/html', 'text/restructured'),
                widget=atapi.RichWidget(label='Objetivos',
                                      label_msgid="label_entry_objetivos",
                                      description_msgid="help_entry_objetivos",
                                      i18n_domain="guegue.alcaldias",
                                      description='Objetivos del Convenio')),
    atapi.DateTimeField('fecha',
                searchable=0,
                required=0,
                widget=atapi.CalendarWidget(label='Fecha de Inicio',
                                      label_msgid="label_entry_fecha",
                                      show_hm = False,
                                      description_msgid="help_entry_fecha",
                                      i18n_domain="guegue.alcaldias",
                                      description='Fecha de inicio del convenio')),
    atapi.DateTimeField('fechafin',
                searchable=0,
                required=0,
                widget=atapi.CalendarWidget(label='Fecha de Finalizacion',
                                      label_msgid="label_entry_fechafin",
                                      show_hm = False,
                                      description_msgid="help_entry_fechafin",
                                      i18n_domain="guegue.alcaldias",
                                      description='Fecha de finalizacion del convenio')),
    atapi.StringField('monto',
              searchable=0,
              required=0,
              widget=atapi.StringWidget(label='Monto del Convenio',
                                      label_msgid="label_entry_monto",
                                      description_msgid="help_entry_monto",
                                      i18n_domain="guegue.alcaldias",
                                      description='Monto del Convenio')),
    atapi.StringField('moneda',
                searchable=1,
                isMetadata=0,
                vocabulary=['Córdobas','Dólares','Euros'],
                widget=atapi.SelectionWidget(label='Moneda: ',
                        label_msgid='label_entry_moneda',
                        description_msgid='help_entry_moneda',
                        i18n_domain='newguegue.newmunicipios',
                        description='')),
    atapi.FileField('adjunto',
              searchable=0,
              required=0,
              widget=atapi.FileWidget(label='Archivo adjunto',
                                label_msgid="label_entry_body",
                                description_msgid="help_entry_adjunto",
                                i18n_domain="guegue.alcaldias",
                                description='Puede adjuntar un archivo relacionado al convenio.')),
    atapi.StringField('proyecto',
                searchable=1,
                isMetadata=0,
                relationship = 'Proyecto',
                vocabulary="getProyectos",
                #widget=atapi.ReferenceWidget(
                widget=atapi.PicklistWidget(
                                label='Proyectos relacionados',
                                label_msgid="label_entry_proyecto",
                                description_msgid="help_entry_proyecto",
                                i18n_domain="guegue.alcaldias",
                                #addable = 1, 
                                description='Proyectos')),
    atapi.TextField('body',
              searchable=1,
              required=0,
              primary=1,
              default_content_type='text/html',
              default_output_type='text/html',
              allowable_content_types=('text/plain','text/structured', 'text/html', 'text/restructured'),
              widget=atapi.RichWidget(label='Otras Consideraciones del Convenio',
                                label_msgid="label_entry_body",
                                description_msgid="help_entry_body",
                                i18n_domain="guegue.alcaldias",
                                description="Otras consideraciones")),
))

# Set storage on fields copied from ATContentTypeSchema, making sure
# they work well with the python bridge properties.

#ConvenioSchema['title'].storage = atapi.AnnotationStorage()
#ConvenioSchema['description'].storage = atapi.AnnotationStorage()

schemata.finalizeATCTSchema(ConvenioSchema, moveDiscussion=False)

class Convenio(base.ATCTContent):
    """Tipo de datos para convenios"""
    implements(IConvenio)

    def getProyectos(self):
        dl = utils.DisplayList()
        linklist = self.portal_catalog.searchResults(portal_type='Proyecto')
        for link in linklist:
            dl.add(link['id'], link['Title'])
        return dl

    portal_type = "Convenio"
    schema = ConvenioSchema

    #title = atapi.ATFieldProperty('title')
    #description = atapi.ATFieldProperty('description')

atapi.registerType(Convenio, PROJECTNAME)
